home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_emacs.idb / usr / freeware / info / gnus-5.z / gnus-5 (.txt)
GNU Info File  |  1998-10-27  |  50KB  |  943 lines

  1. This is Info file ../info/gnus, produced by Makeinfo-1.63 from the
  2. input file gnus.texi.
  3.    This file documents Gnus, the GNU Emacs newsreader.
  4.    Copyright (C) 1995,96 Free Software Foundation, Inc.
  5.    Permission is granted to make and distribute verbatim copies of this
  6. manual provided the copyright notice and this permission notice are
  7. preserved on all copies.
  8.    Permission is granted to copy and distribute modified versions of
  9. this manual under the conditions for verbatim copying, provided also
  10. that the entire resulting derived work is distributed under the terms
  11. of a permission notice identical to this one.
  12.    Permission is granted to copy and distribute translations of this
  13. manual into another language, under the above conditions for modified
  14. versions.
  15. File: gnus,  Node: Unavailable Servers,  Prev: Servers and Methods,  Up: The Server Buffer
  16. Unavailable Servers
  17. -------------------
  18.    If a server seems to be unreachable, Gnus will mark that server as
  19. `denied'.  That means that any subsequent attempt to make contact with
  20. that server will just be ignored.  "It can't be opened," Gnus will tell
  21. you, without making the least effort to see whether that is actually
  22. the case or not.
  23.    That might seem quite naughty, but it does make sense most of the
  24. time.  Let's say you have 10 groups subscribed to the server
  25. `nepholococcygia.com'.  This server is located somewhere quite far away
  26. from you, the machine is quite, so it takes 1 minute just to find out
  27. that it refuses connection from you today.  If Gnus were to attempt to
  28. do that 10 times, you'd be quite annoyed, so Gnus won't attempt to do
  29. that.  Once it has gotten a single "connection refused", it will regard
  30. that server as "down".
  31.    So, what happens if the machine was only feeling unwell temporarily?
  32. How do you test to see whether the machine has come up again?
  33.    You jump to the server buffer (*note The Server Buffer::.) and poke
  34. it with the following commands:
  35.      Try to establish connection to the server on the current line
  36.      (`gnus-server-open-server').
  37.      Close the connection (if any) to the server
  38.      (`gnus-server-close-server').
  39.      Mark the current server as unreachable (`gnus-server-deny-server').
  40.      Remove all marks to whether Gnus was denied connection from all
  41.      servers (`gnus-server-remove-denials').
  42. File: gnus,  Node: Getting News,  Next: Getting Mail,  Prev: The Server Buffer,  Up: Select Methods
  43. Getting News
  44. ============
  45.    A newsreader is normally used for reading news.  Gnus currently
  46. provides only two methods of getting news - it can read from an NNTP
  47. server, or it can read from a local spool.
  48. * Menu:
  49. * NNTP::               Reading news from an NNTP server.
  50. * News Spool::         Reading news from the local spool.
  51. File: gnus,  Node: NNTP,  Next: News Spool,  Up: Getting News
  52.    Subscribing to a foreign group from an NNTP server is rather easy.
  53. You just specify `nntp' as method and the address of the NNTP server as
  54. the, uhm, address.
  55.    If the NNTP server is located at a non-standard port, setting the
  56. third element of the select method to this port number should allow you
  57. to connect to the right port.  You'll have to edit the group info for
  58. that (*note Foreign Groups::.).
  59.    The name of the foreign group can be the same as a native group.  In
  60. fact, you can subscribe to the same group from as many different servers
  61. you feel like.  There will be no name collisions.
  62.    The following variables can be used to create a virtual `nntp'
  63. server:
  64. `nntp-server-opened-hook'
  65.      `nntp-server-opened-hook' is run after a connection has been made.
  66.      It can be used to send commands to the NNTP server after it has
  67.      been contacted.  By default is sends the command `MODE READER' to
  68.      the server with the `nntp-send-mode-reader' function.  Another
  69.      popular function is `nntp-send-authinfo', which will prompt you for
  70.      an NNTP password and stuff.
  71. `nntp-server-action-alist'
  72.      This is an list of regexps to match on server types and actions to
  73.      be taken when matches are made.  For instance, if you want Gnus to
  74.      beep every time you connect to innd, you could say something like:
  75.           (setq nntp-server-action-alist
  76.                 '(("innd" (ding))))
  77.      You probably don't want to do that, though.
  78.      The default value is
  79.             '(("nntpd 1\\.5\\.11t"
  80.                (remove-hook 'nntp-server-opened-hook nntp-send-mode-reader)))
  81.      This ensures that Gnus doesn't send the `MODE READER' command to
  82.      nntpd 1.5.11t, since that command chokes that server, I've been
  83.      told.
  84. `nntp-maximum-request'
  85.      If the NNTP server doesn't support NOV headers, this backend will
  86.      collect headers by sending a series of `head' commands.  To speed
  87.      things up, the backend sends lots of these commands without
  88.      waiting for reply, and then reads all the replies.  This is
  89.      controlled by the `nntp-maximum-request' variable, and is 400 by
  90.      default.  If your network is buggy, you should set this to 1.
  91. `nntp-connection-timeout'
  92.      If you have lots of foreign `nntp' groups that you connect to
  93.      regularly, you're sure to have problems with NNTP servers not
  94.      responding properly, or being too loaded to reply within reasonable
  95.      time.  This is can lead to awkward problems, which can be helped
  96.      somewhat by setting `nntp-connection-timeout'.  This is an integer
  97.      that says how many seconds the `nntp' backend should wait for a
  98.      connection before giving up.  If it is `nil', which is the default,
  99.      no timeouts are done.
  100. `nntp-command-timeout'
  101.      If you're running Gnus on a machine that has a dynamically assigned
  102.      address, Gnus may become confused.  If the address of your machine
  103.      changes after connecting to the NNTP server, Gnus will simply sit
  104.      waiting forever for replies from the server.  To help with this
  105.      unfortunate problem, you can set this command to a number.  Gnus
  106.      will then, if it sits waiting longer than that number of seconds
  107.      for a reply from the server, shut down the connection, start a new
  108.      one, and resend the command.  This should hopefully be transparent
  109.      to the user.  A likely number is 30 seconds.
  110. `nntp-retry-on-break'
  111.      If this variable is non-`nil', you can also `C-g' if Gnus hangs.
  112.      This will have much the same effect as the command timeout
  113.      described above.
  114. `nntp-server-hook'
  115.      This hook is run as the last step when connecting to an NNTP
  116.      server.
  117. `nntp-open-server-function'
  118.      This function is used to connect to the remote system.  Two
  119.      pre-made functions are `nntp-open-network-stream', which is the
  120.      default, and simply connects to some port or other on the remote
  121.      system.  The other is `nntp-open-rlogin', which does an rlogin on
  122.      the remote system, and then does a telnet to the NNTP server
  123.      available there.
  124. `nntp-rlogin-parameters'
  125.      If you use `nntp-open-rlogin' as the `nntp-open-server-function',
  126.      this list will be used as the parameter list given to `rsh'.
  127. `nntp-end-of-line'
  128.      String to use as end-of-line markers when talking to the NNTP
  129.      server.  This is `\r\n' by default, but should be `\n' when using
  130.      `rlogin' to talk to the server.
  131. `nntp-rlogin-user-name'
  132.      User name on the remote system when using the `rlogin' connect
  133.      function.
  134. `nntp-address'
  135.      The address of the remote system running the NNTP server.
  136. `nntp-port-number'
  137.      Port number to connect to when using the `nntp-open-network-stream'
  138.      connect function.
  139. `nntp-buggy-select'
  140.      Set this to non-`nil' if your select routine is buggy.
  141. `nntp-nov-is-evil'
  142.      If the NNTP server does not support NOV, you could set this
  143.      variable to `t', but `nntp' usually checks whether NOV can be used
  144.      automatically.
  145. `nntp-xover-commands'
  146.      List of strings that are used as commands to fetch NOV lines from a
  147.      server.  The default value of this variable is `("XOVER"
  148.      "XOVERVIEW")'.
  149. `nntp-nov-gap'
  150.      `nntp' normally sends just one big request for NOV lines to the
  151.      server.  The server responds with one huge list of lines.  However,
  152.      if you have read articles 2-5000 in the group, and only want to
  153.      read article 1 and 5001, that means that `nntp' will fetch 4999 NOV
  154.      lines that you do not want, and will not use.  This variable says
  155.      how big a gap between two consecutive articles is allowed to be
  156.      before the `XOVER' request is split into several request.  Note
  157.      that if your network is fast, setting this variable to a really
  158.      small number means that fetching will probably be slower.  If this
  159.      variable is `nil', `nntp' will never split requests.
  160. `nntp-prepare-server-hook'
  161.      A hook run before attempting to connect to an NNTP server.
  162. `nntp-async-number'
  163.      How many articles should be pre-fetched when in asynchronous mode.
  164.      If this variable is `t', `nntp' will pre-fetch all the articles
  165.      that it can without bound.  If it is `nil', no pre-fetching will be
  166.      made.
  167. `nntp-warn-about-losing-connection'
  168.      If this variable is non-`nil', some noise will be made when a
  169.      server closes connection.
  170. File: gnus,  Node: News Spool,  Prev: NNTP,  Up: Getting News
  171. News Spool
  172. ----------
  173.    Subscribing to a foreign group from the local spool is extremely
  174. easy, and might be useful, for instance, to speed up reading groups like
  175. `alt.binaries.pictures.furniture'.
  176.    Anyways, you just specify `nnspool' as the method and `' (or
  177. anything else) as the address.
  178.    If you have access to a local spool, you should probably use that as
  179. the native select method (*note Finding the News::.).  It is normally
  180. faster than using an `nntp' select method, but might not be.  It
  181. depends.  You just have to try to find out what's best at your site.
  182. `nnspool-inews-program'
  183.      Program used to post an article.
  184. `nnspool-inews-switches'
  185.      Parameters given to the inews program when posting an article.
  186. `nnspool-spool-directory'
  187.      Where `nnspool' looks for the articles.  This is normally
  188.      `/usr/spool/news/'.
  189. `nnspool-nov-directory'
  190.      Where `nnspool' will look for NOV files.  This is normally
  191.      `/usr/spool/news/over.view/'.
  192. `nnspool-lib-dir'
  193.      Where the news lib dir is (`/usr/lib/news/' by default).
  194. `nnspool-active-file'
  195.      The path of the active file.
  196. `nnspool-newsgroups-file'
  197.      The path of the group descriptions file.
  198. `nnspool-history-file'
  199.      The path of the news history file.
  200. `nnspool-active-times-file'
  201.      The path of the active date file.
  202. `nnspool-nov-is-evil'
  203.      If non-`nil', `nnspool' won't try to use any NOV files that it
  204.      finds.
  205. `nnspool-sift-nov-with-sed'
  206.      If non-`nil', which is the default, use `sed' to get the relevant
  207.      portion from the overview file.  If nil, `nnspool' will load the
  208.      entire file into a buffer and process it there.
  209. File: gnus,  Node: Getting Mail,  Next: Other Sources,  Prev: Getting News,  Up: Select Methods
  210. Getting Mail
  211. ============
  212.    Reading mail with a newsreader--isn't that just plain WeIrD? But of
  213. course.
  214. * Menu:
  215. * Getting Started Reading Mail:: A simple cookbook example.
  216. * Splitting Mail::               How to create mail groups.
  217. * Mail Backend Variables::       Variables for customizing mail handling.
  218. * Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
  219. * Mail and Procmail::            Reading mail groups that procmail create.
  220. * Incorporating Old Mail::       What about the old mail you have?
  221. * Expiring Mail::                Getting rid of unwanted mail.
  222. * Duplicates::                   Dealing with duplicated mail.
  223. * Not Reading Mail::             Using mail backends for reading other files.
  224. * Choosing a Mail Backend::      Gnus can read a variety of mail formats.
  225. File: gnus,  Node: Getting Started Reading Mail,  Next: Splitting Mail,  Up: Getting Mail
  226. Getting Started Reading Mail
  227. ----------------------------
  228.    It's quite easy to use Gnus to read your new mail.  You just plonk
  229. the mail backend of your choice into `gnus-secondary-select-methods',
  230. and things will happen automatically.
  231.    For instance, if you want to use `nnml' (which is a one file per
  232. mail backend), you could put the following in your `.gnus' file:
  233.      (setq gnus-secondary-select-methods
  234.            '((nnml "private")))
  235.    Now, the next time you start Gnus, this backend will be queried for
  236. new articles, and it will move all the messages in your spool file to
  237. its directory, which is `~/Mail/' by default.  The new group that will
  238. be created (`mail.misc') will be subscribed, and you can read it like
  239. any other group.
  240.    You will probably want to split the mail into several groups, though:
  241.      (setq nnmail-split-methods
  242.        '(("junk" "^From:.*Lars Ingebrigtsen")
  243.          ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
  244.          ("other" "")))
  245.    This will result in three new mail groups being created:
  246. `nnml:junk', `nnml:crazy', and `nnml:other'.  All the mail that doesn't
  247. fit into the first two groups will be placed in the latter group.
  248.    This should be sufficient for reading mail with Gnus.  You might
  249. want to give the other sections in this part of the manual a perusal,
  250. though, especially *note Choosing a Mail Backend::. and *note Expiring
  251. Mail::..
  252. File: gnus,  Node: Splitting Mail,  Next: Mail Backend Variables,  Prev: Getting Started Reading Mail,  Up: Getting Mail
  253. Splitting Mail
  254. --------------
  255.    The `nnmail-split-methods' variable says how the incoming mail is to
  256. be split into groups.
  257.      (setq nnmail-split-methods
  258.        '(("mail.junk" "^From:.*Lars Ingebrigtsen")
  259.          ("mail.crazy" "^Subject:.*die\\|^Organization:.*flabby")
  260.          ("mail.other" "")))
  261.    This variable is a list of lists, where the first element of each of
  262. these lists is the name of the mail group (they do not have to be called
  263. something beginning with `mail', by the way), and the second element is
  264. a regular expression used on the header of each mail to determine if it
  265. belongs in this mail group.
  266.    The second element can also be a function.  In that case, it will be
  267. called narrowed to the headers with the first element of the rule as the
  268. argument.  It should return a non-`nil' value if it thinks that the
  269. mail belongs in that group.
  270.    The last of these groups should always be a general one, and the
  271. regular expression should *always* be `' so that it matches any mails
  272. that haven't been matched by any of the other regexps.
  273.    If you like to tinker with this yourself, you can set this variable
  274. to a function of your choice.  This function will be called without any
  275. arguments in a buffer narrowed to the headers of an incoming mail
  276. message.  The function should return a list of groups names that it
  277. thinks should carry this mail message.
  278.    Note that the mail backends are free to maul the poor, innocent
  279. incoming headers all they want to.  They all add `Lines' headers; some
  280. add `X-Gnus-Group' headers; most rename the Unix mbox `From<SPACE>'
  281. line to something else.
  282.    The mail backends all support cross-posting.  If several regexps
  283. match, the mail will be "cross-posted" to all those groups.
  284. `nnmail-crosspost' says whether to use this mechanism or not.  Note
  285. that no articles are crossposted to the general (`') group.
  286.    `nnmh' and `nnml' makes crossposts by creating hard links to the
  287. crossposted articles.  However, not all files systems support hard
  288. links.  If that's the case for you, set
  289. `nnmail-crosspost-link-function' to `copy-file'.  (This variable is
  290. `add-name-to-file' by default.)
  291.    Gnus gives you all the opportunity you could possibly want for
  292. shooting yourself in the foot.  Let's say you create a group that will
  293. contain all the mail you get from your boss.  And then you accidentally
  294. unsubscribe from the group.  Gnus will still put all the mail from your
  295. boss in the unsubscribed group, and so, when your boss mails you "Have
  296. that report ready by Monday or you're fired!", you'll never see it and,
  297. come Tuesday, you'll still believe that you're gainfully employed while
  298. you really should be out collecting empty bottles to save up for next
  299. month's rent money.
  300. File: gnus,  Node: Mail Backend Variables,  Next: Fancy Mail Splitting,  Prev: Splitting Mail,  Up: Getting Mail
  301. Mail Backend Variables
  302. ----------------------
  303.    These variables are (for the most part) pertinent to all the various
  304. mail backends.
  305. `nnmail-read-incoming-hook'
  306.      The mail backends all call this hook after reading new mail.  You
  307.      can use this hook to notify any mail watch programs, if you want
  308.      to.
  309. `nnmail-spool-file'
  310.      The backends will look for new mail in this file.  If this
  311.      variable is `nil', the mail backends will never attempt to fetch
  312.      mail by themselves.  If you are using a POP mail server and your
  313.      name is `larsi', you should set this variable to `po:larsi'.  If
  314.      your name is not `larsi', you should probably modify that
  315.      slightly, but you may have guessed that already, you smart &
  316.      handsome devil!  You can also set this variable to `pop', and Gnus
  317.      will try to figure out the POP mail string by itself.  In any
  318.      case, Gnus will call `movemail' which will contact the POP server
  319.      named in the `MAILHOST' environment variable.  If the POP server
  320.      needs a password, you can either set
  321.      `nnmail-pop-password-required' to `t' and be prompted for the
  322.      password, or set `nnmail-pop-password' to the password itself.
  323.      When you use a mail backend, Gnus will slurp all your mail from
  324.      your inbox and plonk it down in your home directory.  Gnus doesn't
  325.      move any mail if you're not using a mail backend--you have to do a
  326.      lot of magic invocations first.  At the time when you have
  327.      finished drawing the pentagram, lightened the candles, and
  328.      sacrificed the goat, you really shouldn't be too surprised when
  329.      Gnus moves your mail.
  330. `nnmail-use-procmail'
  331.      If non-`nil', the mail backends will look in
  332.      `nnmail-procmail-directory' for incoming mail.  All the files in
  333.      that directory that have names ending in `nnmail-procmail-suffix'
  334.      will be considered incoming mailboxes, and will be searched for new
  335.      mail.
  336. `nnmail-crash-box'
  337.      When the mail backends read a spool file, it is first moved to this
  338.      file, which is `~/.gnus-crash-box' by default.  If this file
  339.      already exists, it will always be read (and incorporated) before
  340.      any other spool files.
  341. `nnmail-prepare-incoming-hook'
  342.      This is run in a buffer that holds all the new incoming mail, and
  343.      can be used for, well, anything, really.
  344. `nnmail-pre-get-new-mail-hook'
  345. `nnmail-post-get-new-mail-hook'
  346.      These are two useful hooks executed when treating new incoming
  347.      mail--`nnmail-pre-get-new-mail-hook' (is called just before
  348.      starting to handle the new mail) and
  349.      `nnmail-post-get-new-mail-hook' (is called when the mail handling
  350.      is done).  Here's and example of using these two hooks to change
  351.      the default file modes the new mail files get:
  352.           (add-hook 'gnus-pre-get-new-mail-hook
  353.                     (lambda () (set-default-file-modes 511)))
  354.           
  355.           (add-hook 'gnus-post-get-new-mail-hook
  356.                     (lambda () (set-default-file-modes 551)))
  357. `nnmail-tmp-directory'
  358.      This variable says where to move the incoming mail to while
  359.      processing it.  This is usually done in the same directory that
  360.      the mail backend inhabits (i.e., `~/Mail/'), but if this variable
  361.      is non-`nil', it will be used instead.
  362. `nnmail-movemail-program'
  363.      This program is executed to move mail from the user's inbox to her
  364.      home directory.  The default is `movemail'.
  365. `nnmail-delete-incoming'
  366.      If non-`nil', the mail backends will delete the temporary incoming
  367.      file after splitting mail into the proper groups.  This is `nil' by
  368.      default for reasons of security.
  369. `nnmail-use-long-file-names'
  370.      If non-`nil', the mail backends will use long file and directory
  371.      names.  Groups like `mail.misc' will end up in directories like
  372.      `mail.misc/'.  If it is `nil', the same group will end up in
  373.      `mail/misc/'.
  374. `nnmail-delete-file-function'
  375.      Function called to delete files.  It is `delete-file' by default.
  376. File: gnus,  Node: Fancy Mail Splitting,  Next: Mail and Procmail,  Prev: Mail Backend Variables,  Up: Getting Mail
  377. Fancy Mail Splitting
  378. --------------------
  379.    If the rather simple, standard method for specifying how to split
  380. mail doesn't allow you to do what you want, you can set
  381. `nnmail-split-methods' to `nnmail-split-fancy'.  Then you can play with
  382. the `nnmail-split-fancy' variable.
  383.    Let's look at an example value of this variable first:
  384.      ;; Messages from the mailer daemon are not crossposted to any of
  385.      ;; the ordinary groups.  Warnings are put in a separate group
  386.      ;; from real errors.
  387.      (| ("from" mail (| ("subject" "warn.*" "mail.warning")
  388.                         "mail.misc"))
  389.         ;; Non-error messages are crossposted to all relevant
  390.         ;; groups, but we don't crosspost between the group for the
  391.         ;; (ding) list and the group for other (ding) related mail.
  392.         (& (| (any "ding@ifi\\.uio\\.no" "ding.list")
  393.               ("subject" "ding" "ding.misc"))
  394.            ;; Other mailing lists...
  395.            (any "procmail@informatik\\.rwth-aachen\\.de" "procmail.list")
  396.            (any "SmartList@informatik\\.rwth-aachen\\.de" "SmartList.list")
  397.            ;; People...
  398.            (any "larsi@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
  399.         ;; Unmatched mail goes to the catch all group.
  400.         "misc.misc"))")
  401.    This variable has the format of a "split".  A split is a (possibly)
  402. recursive structure where each split may contain other splits.  Here are
  403. the four possible split syntaxes:
  404. "GROUP"
  405.      If the split is a string, that will be taken as a group name.
  406. "(FIELD VALUE SPLIT)"
  407.      If the split is a list, and the first element is a string, then
  408.      that means that if header FIELD (a regexp) contains VALUE (also a
  409.      regexp), then store the message as specified by SPLIT.
  410. "(| SPLIT...)"
  411.      If the split is a list, and the first element is `|' (vertical
  412.      bar), then process each SPLIT until one of them matches.  A SPLIT
  413.      is said to match if it will cause the mail message to be stored in
  414.      one or more groups.
  415. "(& SPLIT...)"
  416.      If the split is a list, and the first element is `&', then process
  417.      all SPLITs in the list.
  418.    In these splits, FIELD must match a complete field name.  VALUE must
  419. match a complete word according to the fundamental mode syntax table.
  420. You can use `.*' in the regexps to match partial field names or words.
  421.    FIELD and VALUE can also be lisp symbols, in that case they are
  422. expanded as specified by the variable `nnmail-split-abbrev-alist'.
  423. This is an alist of cons cells, where the car of the cells contains the
  424. key, and the cdr contains a string.
  425.    `nnmail-split-fancy-syntax-table' is the syntax table in effect when
  426. all this splitting is performed.
  427. File: gnus,  Node: Mail and Procmail,  Next: Incorporating Old Mail,  Prev: Fancy Mail Splitting,  Up: Getting Mail
  428. Mail and Procmail
  429. -----------------
  430.    Many people use `procmail' (or some other mail filter program or
  431. external delivery agent--`slocal', `elm', etc) to split incoming mail
  432. into groups.  If you do that, you should set `nnmail-spool-file' to
  433. `procmail' to ensure that the mail backends never ever try to fetch
  434. mail by themselves.
  435.    This also means that you probably don't want to set
  436. `nnmail-split-methods' either, which has some, perhaps, unexpected side
  437. effects.
  438.    When a mail backend is queried for what groups it carries, it replies
  439. with the contents of that variable, along with any groups it has figured
  440. out that it carries by other means.  None of the backends (except
  441. `nnmh') actually go out to the disk and check what groups actually
  442. exist.  (It's not trivial to distinguish between what the user thinks is
  443. a basis for a newsgroup and what is just a plain old file or directory.)
  444.    This means that you have to tell Gnus (and the backends) what groups
  445. exist by hand.
  446.    Let's take the `nnmh' backend as an example.
  447.    The folders are located in `nnmh-directory', say, `~/Mail/'.  There
  448. are three folders, `foo', `bar' and `mail.baz'.
  449.    Go to the group buffer and type `G m'.  When prompted, answer `foo'
  450. for the name and `nnmh' for the method.  Repeat twice for the two other
  451. groups, `bar' and `mail.baz'.  Be sure to include all your mail groups.
  452.    That's it.  You are now set to read your mail.  An active file for
  453. this method will be created automatically.
  454.    If you use `nnfolder' or any other backend that store more than a
  455. single article in each file, you should never have procmail add mails to
  456. the file that Gnus sees.  Instead, procmail should put all incoming mail
  457. in `nnmail-procmail-directory'.  To arrive at the file name to put the
  458. incoming mail in, append `nnmail-procmail-suffix' to the group name.
  459. The mail backends will read the mail from these files.
  460.    When Gnus reads a file called `mail.misc.spool', this mail will be
  461. put in the `mail.misc', as one would expect.  However, if you want Gnus
  462. to split the mail the normal way, you could set
  463. `nnmail-resplit-incoming' to `t'.
  464.    If you use `procmail' to split things directory into an `nnmh'
  465. directory (which you shouldn't do), you should set
  466. `nnmail-keep-last-article' to non-`nil' to prevent Gnus from ever
  467. expiring the final article in a mail newsgroup.  This is quite, quite
  468. important.
  469. File: gnus,  Node: Incorporating Old Mail,  Next: Expiring Mail,  Prev: Mail and Procmail,  Up: Getting Mail
  470. Incorporating Old Mail
  471. ----------------------
  472.    Most people have lots of old mail stored in various file formats.  If
  473. you have set up Gnus to read mail using one of the spiffy Gnus mail
  474. backends, you'll probably wish to have that old mail incorporated into
  475. your mail groups.
  476.    Doing so can be quite easy.
  477.    To take an example: You're reading mail using `nnml' (*note Mail
  478. Spool::.), and have set `nnmail-split-methods' to a satisfactory value
  479. (*note Splitting Mail::.).  You have an old Unix mbox file filled with
  480. important, but old, mail.  You want to move it into your `nnml' groups.
  481.    Here's how:
  482.   1. Go to the group buffer.
  483.   2. Type `G f' and give the path of the mbox file when prompted to
  484.      create an `nndoc' group from the mbox file (*note Foreign
  485.      Groups::.).
  486.   3. Type `SPACE' to enter the newly created group.
  487.   4. Type `M P b' to process-mark all articles in this group (*note
  488.      Setting Process Marks::.).
  489.   5. Type `B r' to respool all the process-marked articles, and answer
  490.      `nnml' when prompted (*note Mail Group Commands::.).
  491.    All the mail messages in the mbox file will now also be spread out
  492. over all your `nnml' groups.  Try entering them and check whether things
  493. have gone without a glitch.  If things look ok, you may consider
  494. deleting the mbox file, but I wouldn't do that unless I was absolutely
  495. sure that all the mail has ended up where it should be.
  496.    Respooling is also a handy thing to do if you're switching from one
  497. mail backend to another.  Just respool all the mail in the old mail
  498. groups using the new mail backend.
  499. File: gnus,  Node: Expiring Mail,  Next: Duplicates,  Prev: Incorporating Old Mail,  Up: Getting Mail
  500. Expiring Mail
  501. -------------
  502.    Traditional mail readers have a tendency to remove mail articles when
  503. you mark them as read, in some way.  Gnus takes a fundamentally
  504. different approach to mail reading.
  505.    Gnus basically considers mail just to be news that has been received
  506. in a rather peculiar manner.  It does not think that it has the power to
  507. actually change the mail, or delete any mail messages.  If you enter a
  508. mail group, and mark articles as "read", or kill them in some other
  509. fashion, the mail articles will still exist on the system.  I repeat:
  510. Gnus will not delete your old, read mail.  Unless you ask it to, of
  511. course.
  512.    To make Gnus get rid of your unwanted mail, you have to mark the
  513. articles as "expirable".  This does not mean that the articles will
  514. disappear right away, however.  In general, a mail article will be
  515. deleted from your system if, 1) it is marked as expirable, AND 2) it is
  516. more than one week old.  If you do not mark an article as expirable, it
  517. will remain on your system until hell freezes over.  This bears
  518. repeating one more time, with some spurious capitalizations: IF you do
  519. NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
  520.    You do not have to mark articles as expirable by hand.  Groups that
  521. match the regular expression `gnus-auto-expirable-newsgroups' will have
  522. all articles that you read marked as expirable automatically.  All
  523. articles that are marked as expirable have an `E' in the first column
  524. in the summary buffer.
  525.    Let's say you subscribe to a couple of mailing lists, and you want
  526. the articles you have read to disappear after a while:
  527.      (setq gnus-auto-expirable-newsgroups
  528.            "mail.nonsense-list\\|mail.nice-list")
  529.    Another way to have auto-expiry happen is to have the element
  530. `auto-expire' in the group parameters of the group.
  531.    The `nnmail-expiry-wait' variable supplies the default time an
  532. expirable article has to live.  The default is seven days.
  533.    Gnus also supplies a function that lets you fine-tune how long
  534. articles are to live, based on what group they are in.  Let's say you
  535. want to have one month expiry period in the `mail.private' group, a one
  536. day expiry period in the `mail.junk' group, and a six day expiry period
  537. everywhere else:
  538.      (setq nnmail-expiry-wait-function
  539.            (lambda (group)
  540.             (cond ((string= group "mail.private")
  541.                     31)
  542.                   ((string= group "mail.junk")
  543.                     1)
  544.                   ((string= group "important")
  545.                     'never)
  546.                   (t
  547.                     6))))
  548.    The group names that this function is fed are "unadorned" group
  549. names--no `nnml:' prefixes and the like.
  550.    The `nnmail-expiry-wait' variable and `nnmail-expiry-wait-function'
  551. function can be either a number (not necessarily an integer) or the
  552. symbols `immediate' or `never'.
  553.    You can also use the `expiry-wait' group parameter to selectively
  554. change the expiry period (*note Group Parameters::.).
  555.    If `nnmail-keep-last-article' is non-`nil', Gnus will never expire
  556. the final article in a mail newsgroup.  This is to make life easier for
  557. procmail users.
  558.    By the way, that line up there about Gnus never expiring
  559. non-expirable articles is a lie.  If you put `total-expire' in the group
  560. parameters, articles will not be marked as expirable, but all read
  561. articles will be put through the expiry process.  Use with extreme
  562. caution.  Even more dangerous is the `gnus-total-expirable-newsgroups'
  563. variable.  All groups that match this regexp will have all read
  564. articles put through the expiry process, which means that *all* old
  565. mail articles in the groups in question will be deleted after a while.
  566. Use with extreme caution, and don't come crying to me when you discover
  567. that the regexp you used matched the wrong group and all your important
  568. mail has disappeared.  Be a *man*!  Or a *woman*!  Whatever you feel
  569. more comfortable with!  So there!
  570. File: gnus,  Node: Duplicates,  Next: Not Reading Mail,  Prev: Expiring Mail,  Up: Getting Mail
  571. Duplicates
  572. ----------
  573.    If you are a member of a couple of mailing list, you will sometime
  574. receive two copies of the same mail.  This can be quite annoying, so
  575. `nnmail' checks for and treats any duplicates it might find.  To do
  576. this, it keeps a cache of old `Message-ID's -
  577. `nnmail-message-id-cache-file', which is `~/.nnmail-cache' by default.
  578. The approximate maximum number of `Message-ID's stored there is
  579. controlled by the `nnmail-message-id-cache-length' variable, which is
  580. 1000 by default. (So 1000 `Message-ID's will be stored.) If all this
  581. sounds scary to you, you can set `nnmail-treat-duplicates' to `warn'
  582. (which is what it is by default), and `nnmail' won't delete duplicate
  583. mails.  Instead it will generate a brand new `Message-ID' for the mail
  584. and insert a warning into the head of the mail saying that it thinks
  585. that this is a duplicate of a different message.
  586.    This variable can also be a function.  If that's the case, the
  587. function will be called from a buffer narrowed to the message in
  588. question with the `Message-ID' as a parameter.  The function must
  589. return either `nil', `warn', or `delete'.
  590.    You can turn this feature off completely by setting the variable to
  591. `nil'.
  592.    If you want all the duplicate mails to be put into a special
  593. "duplicates" group, you could do that using the normal mail split
  594. methods:
  595.      (setq nnmail-split-fancy
  596.            '(| ;; Messages duplicates go to a separate group.
  597.                ("gnus-warning" "duplication of message" "duplicate")
  598.                ;; Message from daemons, postmaster, and the like to another.
  599.                (any mail "mail.misc")
  600.                ;; Other rules.
  601.                [ ... ] ))
  602.    Or something like:
  603.      (setq nnmail-split-methods
  604.            '(("duplicates" "^Gnus-Warning:")
  605.              ;; Other rules.
  606.              [...]))
  607.    Here's a neat feature: If you know that the recipient reads her mail
  608. with Gnus, and that she has `nnmail-treat-duplicates' set to `delete',
  609. you can send her as many insults as you like, just by using a
  610. `Message-ID' of a mail that you know that she's already received.
  611. Think of all the fun!  She'll never see any of it!  Whee!
  612. File: gnus,  Node: Not Reading Mail,  Next: Choosing a Mail Backend,  Prev: Duplicates,  Up: Getting Mail
  613. Not Reading Mail
  614. ----------------
  615.    If you start using any of the mail backends, they have the annoying
  616. habit of assuming that you want to read mail with them.  This might not
  617. be unreasonable, but it might not be what you want.
  618.    If you set `nnmail-spool-file' to `nil', none of the backends will
  619. ever attempt to read incoming mail, which should help.
  620.    This might be too much, if, for instance, you are reading mail quite
  621. happily with `nnml' and just want to peek at some old RMAIL file you
  622. have stashed away with `nnbabyl'.  All backends have variables called
  623. backend-`get-new-mail'.  If you want to disable the `nnbabyl' mail
  624. reading, you edit the virtual server for the group to have a setting
  625. where `nnbabyl-get-new-mail' to `nil'.
  626.    All the mail backends will call `nn'*`-prepare-save-mail-hook'
  627. narrowed to the article to be saved before saving it when reading
  628. incoming mail.
  629. File: gnus,  Node: Choosing a Mail Backend,  Prev: Not Reading Mail,  Up: Getting Mail
  630. Choosing a Mail Backend
  631. -----------------------
  632.    Gnus will read the mail spool when you activate a mail group.  The
  633. mail file is first copied to your home directory.  What happens after
  634. that depends on what format you want to store your mail in.
  635. * Menu:
  636. * Unix Mail Box::               Using the (quite) standard Un*x mbox.
  637. * Rmail Babyl::                 Emacs programs use the rmail babyl format.
  638. * Mail Spool::                  Store your mail in a private spool?
  639. * MH Spool::                    An mhspool-like backend.
  640. * Mail Folders::                Having one file for each group.
  641. File: gnus,  Node: Unix Mail Box,  Next: Rmail Babyl,  Up: Choosing a Mail Backend
  642. Unix Mail Box
  643. .............
  644.    The "nnmbox" backend will use the standard Un*x mbox file to store
  645. mail.  `nnmbox' will add extra headers to each mail article to say
  646. which group it belongs in.
  647.    Virtual server settings:
  648. `nnmbox-mbox-file'
  649.      The name of the mail box in the user's home directory.
  650. `nnmbox-active-file'
  651.      The name of the active file for the mail box.
  652. `nnmbox-get-new-mail'
  653.      If non-`nil', `nnmbox' will read incoming mail and split it into
  654.      groups.
  655. File: gnus,  Node: Rmail Babyl,  Next: Mail Spool,  Prev: Unix Mail Box,  Up: Choosing a Mail Backend
  656. Rmail Babyl
  657. ...........
  658.    The "nnbabyl" backend will use a babyl mail box (aka. "rmail mbox")
  659. to store mail. `nnbabyl' will add extra headers to each mail article to
  660. say which group it belongs in.
  661.    Virtual server settings:
  662. `nnbabyl-mbox-file'
  663.      The name of the rmail mbox file.
  664. `nnbabyl-active-file'
  665.      The name of the active file for the rmail box.
  666. `nnbabyl-get-new-mail'
  667.      If non-`nil', `nnbabyl' will read incoming mail.
  668. File: gnus,  Node: Mail Spool,  Next: MH Spool,  Prev: Rmail Babyl,  Up: Choosing a Mail Backend
  669. Mail Spool
  670. ..........
  671.    The "nnml" spool mail format isn't compatible with any other known
  672. format.  It should be used with some caution.
  673.    If you use this backend, Gnus will split all incoming mail into
  674. files; one file for each mail, and put the articles into the correct
  675. directories under the directory specified by the `nnml-directory'
  676. variable.  The default value is `~/Mail/'.
  677.    You do not have to create any directories beforehand; Gnus will take
  678. care of all that.
  679.    If you have a strict limit as to how many files you are allowed to
  680. store in your account, you should not use this backend.  As each mail
  681. gets its own file, you might very well occupy thousands of inodes
  682. within a few weeks.  If this is no problem for you, and it isn't a
  683. problem for you having your friendly systems administrator walking
  684. around, madly, shouting "Who is eating all my inodes?! Who? Who!?!",
  685. then you should know that this is probably the fastest format to use.
  686. You do not have to trudge through a big mbox file just to read your new
  687. mail.
  688.    `nnml' is probably the slowest backend when it comes to article
  689. splitting.  It has to create lots of files, and it also generates NOV
  690. databases for the incoming mails.  This makes is the fastest backend
  691. when it comes to reading mail.
  692.    Virtual server settings:
  693. `nnml-directory'
  694.      All `nnml' directories will be placed under this directory.
  695. `nnml-active-file'
  696.      The active file for the `nnml' server.
  697. `nnml-newsgroups-file'
  698.      The `nnml' group descriptions file.  *Note Newsgroups File
  699.      Format::.
  700. `nnml-get-new-mail'
  701.      If non-`nil', `nnml' will read incoming mail.
  702. `nnml-nov-is-evil'
  703.      If non-`nil', this backend will ignore any NOV files.
  704. `nnml-nov-file-name'
  705.      The name of the NOV files.  The default is `.overview'.
  706. `nnml-prepare-save-mail-hook'
  707.      Hook run narrowed to an article before saving.
  708.    If your `nnml' groups and NOV files get totally out of whack, you
  709. can do a complete update by typing `M-x nnml-generate-nov-databases'.
  710. This command will trawl through the entire `nnml' hierarchy, looking at
  711. each and every article, so it might take a while to complete.
  712. File: gnus,  Node: MH Spool,  Next: Mail Folders,  Prev: Mail Spool,  Up: Choosing a Mail Backend
  713. MH Spool
  714. ........
  715.    `nnmh' is just like `nnml', except that is doesn't generate NOV
  716. databases and it doesn't keep an active file.  This makes `nnmh' a
  717. *much* slower backend than `nnml', but it also makes it easier to write
  718. procmail scripts for.
  719.    Virtual server settings:
  720. `nnmh-directory'
  721.      All `nnmh' directories will be located under this directory.
  722. `nnmh-get-new-mail'
  723.      If non-`nil', `nnmh' will read incoming mail.
  724. `nnmh-be-safe'
  725.      If non-`nil', `nnmh' will go to ridiculous lengths to make sure
  726.      that the articles in the folder are actually what Gnus thinks they
  727.      are.  It will check date stamps and stat everything in sight, so
  728.      setting this to `t' will mean a serious slow-down.  If you never
  729.      use anything but Gnus to read the `nnmh' articles, you do not have
  730.      to set this variable to `t'.
  731. File: gnus,  Node: Mail Folders,  Prev: MH Spool,  Up: Choosing a Mail Backend
  732. Mail Folders
  733. ............
  734.    `nnfolder' is a backend for storing each mail group in a separate
  735. file.  Each file is in the standard Un*x mbox format.  `nnfolder' will
  736. add extra headers to keep track of article numbers and arrival dates.
  737.    Virtual server settings:
  738. `nnfolder-directory'
  739.      All the `nnfolder' mail boxes will be stored under this directory.
  740. `nnfolder-active-file'
  741.      The name of the active file.
  742. `nnfolder-newsgroups-file'
  743.      The name of the group descriptions file.  *Note Newsgroups File
  744.      Format::.
  745. `nnfolder-get-new-mail'
  746.      If non-`nil', `nnfolder' will read incoming mail.
  747.    If you have lots of `nnfolder'-like files you'd like to read with
  748. `nnfolder', you can use the `M-x nnfolder-generate-active-file' command
  749. to make `nnfolder' aware of all likely files in `nnfolder-directory'.
  750. File: gnus,  Node: Other Sources,  Next: Combined Groups,  Prev: Getting Mail,  Up: Select Methods
  751. Other Sources
  752. =============
  753.    Gnus can do more than just read news or mail.  The methods described
  754. below allow Gnus to view directories and files as if they were
  755. newsgroups.
  756. * Menu:
  757. * Directory Groups::   You can read a directory as if it was a newsgroup.
  758. * Anything Groups::    Dired?  Who needs dired?
  759. * Document Groups::    Single files can be the basis of a group.
  760. * SOUP::               Reading SOUP packets "offline".
  761. File: gnus,  Node: Directory Groups,  Next: Anything Groups,  Up: Other Sources
  762. Directory Groups
  763. ----------------
  764.    If you have a directory that has lots of articles in separate files
  765. in it, you might treat it as a newsgroup.  The files have to have
  766. numerical names, of course.
  767.    This might be an opportune moment to mention `ange-ftp', that most
  768. wonderful of all wonderful Emacs packages.  When I wrote `nndir', I
  769. didn't think much about it--a backend to read directories.  Big deal.
  770.    `ange-ftp' changes that picture dramatically.  For instance, if you
  771. enter `"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"' as the the directory
  772. name, ange-ftp will actually allow you to read this directory over at
  773. `sina' as a newsgroup.  Distributed news ahoy!
  774.    `nndir' will use NOV files if they are present.
  775.    `nndir' is a "read-only" backend--you can't delete or expire
  776. articles with this method.  You can use `nnmh' or `nnml' for whatever
  777. you use `nndir' for, so you could switch to any of those methods if you
  778. feel the need to have a non-read-only `nndir'.
  779. File: gnus,  Node: Anything Groups,  Next: Document Groups,  Prev: Directory Groups,  Up: Other Sources
  780. Anything Groups
  781. ---------------
  782.    From the `nndir' backend (which reads a single spool-like
  783. directory), it's just a hop and a skip to `nneething', which pretends
  784. that any arbitrary directory is a newsgroup.  Strange, but true.
  785.    When `nneething' is presented with a directory, it will scan this
  786. directory and assign article numbers to each file.  When you enter such
  787. a group, `nneething' must create "headers" that Gnus can use.  After
  788. all, Gnus is a newsreader, in case you're forgetting. `nneething' does
  789. this in a two-step process.  First, it snoops each file in question.
  790. If the file looks like an article (i.e., the first few lines look like
  791. headers), it will use this as the head.  If this is just some arbitrary
  792. file without a head (eg. a C source file), `nneething' will cobble up a
  793. header out of thin air.  It will use file ownership, name and date and
  794. do whatever it can with these elements.
  795.    All this should happen automatically for you, and you will be
  796. presented with something that looks very much like a newsgroup.
  797. Totally like a newsgroup, to be precise.  If you select an article, it
  798. will be displayed in the article buffer, just as usual.
  799.    If you select a line that represents a directory, Gnus will pop you
  800. into a new summary buffer for this `nneething' group.  And so on.  You
  801. can traverse the entire disk this way, if you feel like, but remember
  802. that Gnus is not dired, really, and does not intend to be, either.
  803.    There are two overall modes to this action--ephemeral or solid.  When
  804. doing the ephemeral thing (i.e., `G D' from the group buffer), Gnus
  805. will not store information on what files you have read, and what files
  806. are new, and so on.  If you create a solid `nneething' group the normal
  807. way with `G m', Gnus will store a mapping table between article numbers
  808. and file names, and you can treat this group like any other groups.
  809. When you activate a solid `nneething' group, you will be told how many
  810. unread articles it contains, etc., etc.
  811.    Some variables:
  812. `nneething-map-file-directory'
  813.      All the mapping files for solid `nneething' groups will be stored
  814.      in this directory, which defaults to `~/.nneething/'.
  815. `nneething-exclude-files'
  816.      All files that match this regexp will be ignored.  Nice to use to
  817.      exclude auto-save files and the like, which is what it does by
  818.      default.
  819. `nneething-map-file'
  820.      Name of the map files.
  821. File: gnus,  Node: Document Groups,  Next: SOUP,  Prev: Anything Groups,  Up: Other Sources
  822. Document Groups
  823. ---------------
  824.    `nndoc' is a cute little thing that will let you read a single file
  825. as a newsgroup.  Several files types are supported:
  826. `babyl'
  827.      The babyl (rmail) mail box.
  828. `mbox'
  829.      The standard Unix mbox file.
  830. `mmdf'
  831.      The MMDF mail box format.
  832. `news'
  833.      Several news articles appended into a file.
  834. `rnews'
  835.      The rnews batch transport format.
  836. `forward'
  837.      Forwarded articles.
  838. `mime-digest'
  839.      MIME (RFC 1341) digest format.
  840. `standard-digest'
  841.      The standard (RFC 1153) digest format.
  842. `slack-digest'
  843.      Non-standard digest format--matches most things, but does it badly.
  844.    You can also use the special "file type" `guess', which means that
  845. `nndoc' will try to guess what file type it is looking at.  `digest'
  846. means that `nndoc' should guess what digest type the file is.
  847.    `nndoc' will not try to change the file or insert any extra headers
  848. into it--it will simply, like, let you use the file as the basis for a
  849. group.  And that's it.
  850.    If you have some old archived articles that you want to insert into
  851. your new & spiffy Gnus mail backend, `nndoc' can probably help you with
  852. that.  Say you have an old `RMAIL' file with mail that you now want to
  853. split into your new `nnml' groups.  You look at that file using
  854. `nndoc', set the process mark on all the articles in the buffer (`M P
  855. b', for instance), and then re-spool (`B r') using `nnml'.  If all goes
  856. well, all the mail in the `RMAIL' file is now also stored in lots of
  857. `nnml' directories, and you can delete that pesky `RMAIL' file.  If you
  858. have the guts!
  859.    Virtual server variables:
  860. `nndoc-article-type'
  861.      This should be one of `mbox', `babyl', `digest', `mmdf',
  862.      `forward', `news', `rnews', `mime-digest', `clari-briefs', or
  863.      `guess'.
  864. `nndoc-post-type'
  865.      This variable says whether Gnus is to consider the group a news
  866.      group or a mail group.  There are two legal values:  `mail' (the
  867.      default) and `news'.
  868. File: gnus,  Node: SOUP,  Prev: Document Groups,  Up: Other Sources
  869.    In the PC world people often talk about "offline" newsreaders.  These
  870. are thingies that are combined reader/news transport monstrosities.
  871. With built-in modem programs.  Yecchh!
  872.    Of course, us Unix Weenie types of human beans use things like
  873. `uucp' and, like, `nntpd' and set up proper news and mail transport
  874. things like Ghod intended.  And then we just use normal newsreaders.
  875.    However, it can sometimes be convenient to do something a that's a
  876. bit easier on the brain if you have a very slow modem, and you're not
  877. really that interested in doing things properly.
  878.    A file format called SOUP has been developed for transporting news
  879. and mail from servers to home machines and back again.  It can be a bit
  880. fiddly.
  881.   1. You log in on the server and create a SOUP packet.  You can either
  882.      use a dedicated SOUP thingie, or you can use Gnus to create the
  883.      packet with the `O s' command.
  884.   2. You transfer the packet home.  Rail, boat, car or modem will do
  885.      fine.
  886.   3. You put the packet in your home directory.
  887.   4. You fire up Gnus using the `nnsoup' backend as the native server.
  888.   5. You read articles and mail and answer and followup to the things
  889.      you want.
  890.   6. You do the `G s r' command to pack these replies into a SOUP
  891.      packet.
  892.   7. You transfer this packet to the server.
  893.   8. You use Gnus to mail this packet out with the `G s s' command.
  894.   9. You then repeat until you die.
  895.    So you basically have a bipartite system--you use `nnsoup' for
  896. reading and Gnus for packing/sending these SOUP packets.
  897. * Menu:
  898. * SOUP Commands::     Commands for creating and sending SOUP packets
  899. * SOUP Groups::       A backend for reading SOUP packets.
  900. * SOUP Replies::      How to enable `nnsoup' to take over mail and news.
  901. File: gnus,  Node: SOUP Commands,  Next: SOUP Groups,  Up: SOUP
  902. SOUP Commands
  903. .............
  904. `G s b'
  905.      Pack all unread articles in the current group
  906.      (`gnus-group-brew-soup').  This command understands the
  907.      process/prefix convention.
  908. `G s w'
  909.      Save all data files (`gnus-soup-save-areas').
  910. `G s s'
  911.      Send all replies from the replies packet
  912.      (`gnus-soup-send-replies').
  913. `G s p'
  914.      Pack all files into a SOUP packet (`gnus-soup-pack-packet').
  915. `G s r'
  916.      Pack all replies into a replies packet (`nnsoup-pack-replies').
  917. `O s'
  918.      This summary-mode command adds the current article to a SOUP packet
  919.      (`gnus-soup-add-article').  It understands the process/prefix
  920.      convention.
  921.    There are a few variables to customize where Gnus will put all these
  922. thingies:
  923. `gnus-soup-directory'
  924.      Directory where Gnus will save intermediate files while composing
  925.      SOUP packets.  The default is `~/SoupBrew/'.
  926. `gnus-soup-replies-directory'
  927.      This is what Gnus will use as a temporary directory while sending
  928.      our reply packets.  The default is `~/SoupBrew/SoupReplies/'.
  929. `gnus-soup-prefix-file'
  930.      Name of the file where Gnus stores the last used prefix.  The
  931.      default is `gnus-prefix'.
  932. `gnus-soup-packer'
  933.      A format string command for packing a SOUP packet.  The default is
  934.      `tar cf - %s | gzip > $HOME/Soupout%d.tgz'.
  935. `gnus-soup-unpacker'
  936.      Format string command for unpacking a SOUP packet.  The default is
  937.      `gunzip -c %s | tar xvf -'.
  938. `gnus-soup-packet-directory'
  939.      Where Gnus will look for reply packets.  The default is `~/'.
  940. `gnus-soup-packet-regexp'
  941.      Regular expression matching SOUP reply packets in
  942.      `gnus-soup-packet-directory'.
  943.